﻿// Decompiled with JetBrains decompiler
// Type: Microsoft.InfoCards.InfocardExtendedInformationEntry
// Assembly: infocard, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// MVID: 8E14765A-6610-409A-BA36-099A0642905D
// Assembly location: E:\git\ALLIDA\windll\infocard.exe

using Microsoft.InfoCards.Diagnostics;
using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;

namespace Microsoft.InfoCards
{
  internal class InfocardExtendedInformationEntry : IXmlSerializable
  {
    private string m_xmlElement;

    public void Serialize(BinaryWriter writer)
    {
      Utility.SerializeString(writer, this.m_xmlElement);
    }

    public void Deserialize(BinaryReader reader)
    {
      this.m_xmlElement = Utility.DeserializeString(reader);
    }

    public string GetXml()
    {
      return this.m_xmlElement;
    }

    public System.Xml.Schema.XmlSchema GetSchema()
    {
      return (System.Xml.Schema.XmlSchema) null;
    }

    public void WriteXml(XmlWriter writer)
    {
      if (writer == null)
        throw InfoCardTrace.ThrowHelperArgumentNull(nameof (writer));
      XmlReader reader = InfoCardSchemas.CreateReader(this.m_xmlElement);
      writer.WriteNode(reader, false);
    }

    public void ReadXml(XmlReader reader)
    {
      if (!reader.IsStartElement())
        throw InfoCardTrace.ThrowHelperError((Exception) new InvalidCardException(SR.GetString("UnexpectedElement")));
      XmlReader xmlReader = reader.ReadSubtree();
      xmlReader.Read();
      this.m_xmlElement = xmlReader.ReadOuterXml();
      xmlReader.Close();
    }
  }
}
